/***********************************************************************************
 * 文件名： thread_com.h
 * 作者： 刘言
 * 版本： 1
 * 说明：
 * 		单线通信，通信总线只有1根数据线，通信双方各有1个IO口连接到总线上，总线外部通过1个电
 * 阻下拉，空闲时为低电平。
 * 		ThreadCom 通信接口更多细节参考《ThreadCom通信接口》文档。
 * 		本文件提供了以下接口：
 * 		TC_Start:  开始通信
 * 		TC_Stop: 结束通信
 * 		TC_Send:  发送一个数据包
 * 		TC_Receive:  接收一个数据包
 * 		使用流程: 先调用 TC_Start 如果成功说明已经与从机建立通信，
 * 	之后调用 TC_Send TC_Receive 发送或者接收数据，最后调用 TC_Stop 结束本次通信。
 * 修改记录：
 * 	2020/6/1: 初版。 刘言。
***********************************************************************************/
#ifndef _THREAD_COM_H_
#define _THREAD_COM_H_

// 输入接口定义

#define TC_REQUEST					/*申请独占输出与ADC硬件*/
#define TC_RELEASE					/*释放输出与ADC硬件*/

#define TC_ENTER_CRI		SYS_DISABLE_INT()		/*关中断*/
#define TC_EXIT_CRI			SYS_ENABLE_INT()		/*开中断*/

#define TC_INIT				{PORT3_HZ_IN;}
#define TC_DEINIT			{PORT3_HZ_IN;}

#define TC_OUT_H			PORT3_O=1;
#define TC_OUT_L			PORT3_O=0;
#define TC_OUT_INHZ			PORT3_HZ_IN
#define TC_OUT_OUTPP		PORT3_PP_OUT

#define TC_IN_LEVEL			PORT3_I

#define TC_DELAY_US(a)		Delay_us(a)
#define TC_DELAY_MS(a)		Delay_ms(a)


// 参数设置

#define COMM_ROLE					0		// 通信角色：0-主机，1-从机
#define LEVEL_DETECT_INTTERVAL		10		// 电平检测间隔，单位us
#define DEFAULT_HALF_CYCLE			200		// 默认的半周期，单位us

// 自定义类型

typedef enum _tc_errcode_t
{
	TC_SUCCESS=0,
	TC_BUS_ERROR=0x80,		
	TC_NO_SLAVE,				
	TC_BREAK_SLAVE,
	TC_BREAK_HOST,
	TC_RX_TIMEOUT,
	TC_CHK_ERROR,
	TC_UNKNOW_DEV
}tc_errcode_t;

// 对外接口

tc_errcode_t TC_Start();	
void TC_Stop();
tc_errcode_t TC_Receive(u8 *buff,u8 *len);
void TC_Send(u8 * buff,u8 length);

#endif




